A bar code symbol comprises a series of nominally equal length, parallel bar code lines (hereinafter "bars") spaced apart and positioned in perpendicular relation to a linear axis. In most bar code formats, a bar code symbol is characterized by bars of nonuniform widths and next adjacent bars of nonuniform spacings between them. The widths of the bars are integer multiples of predetermined unit widths, and the spacings between the next adjacent bars are integer multiples of predetermined unit spaces. The bars and the spaces between them represent contrasting binary symbol components (e.g., dark and light, respectively) that are indicative of a self-contained message, which is read by a bar code scanner.
A conventional bar code scanner decodes or "reads" a bar code symbol by passing a light beam along a straight-line scan path across the symbol and detecting the intensity of light reflected by the symbol. The light reflected by the bar code symbol is intensity modulated in accordance with the sequence of contrasting bars and spaces between them. The bar code scanner determines from the reflected, intensity-modulated light the relative widths of the bars and spaces in the bar code symbol, and thereby reads the message contained therein. Conventional bar code scanners typically are of the fixed-beam scanner type such as wands, slot readers, or non-contact scanners, or are of the moving-beam scanner type such as handheld laser scanners or fixed-mount laser scanners.
A bar code symbol of the type described above heretofore had to be scanned along a straight-line path because a change in the direction of a scan path introduces a consequent change in the relative widths of the bars and spaces detected by the bar code scanner. For example, a scan path that departs from a nominal straight-line path by an angle .theta. within the bar code region changes the detected relative widths of the bars and spaces by a factor (cos .theta.).sup.-1. Such a change in detected relative widths of bars and spaces could cause an erroneous reading of a bar code symbol.
One type of conventional bar code scanner must scan the light beam across the bar code symbol at a constant scan speed because a change in the scan speed also introduces a consequent change in the relative widths of the bars and spaces detected by the bar code scanner. For example, an increase in the scan speed that occurs within the bar code region causes a corresponding reduction in the detected relative widths of the bars and spaces. As in the case of a change in scan path direction, a change in the scan speed could also cause an erroneous reading of a bar code symbol. A conventional bar code scanner is, therefore, capable of accurately reading a bar code symbol only if the light beam is scanned across the bar code symbol at a constant velocity, i.e., at constant speed and in an unchanging direction.
Moving-beam scanners inherently achieve straight-line scan paths, but fixed-beam scanners achieve straight-line scan paths by providing straight-line motion between the bar code symbol and the scanner. Straight-line motion may be provided, for example, by an operator manually passing a wand over a bar code symbol or by mechanically transporting the bar code symbol past the scanner.
Certain types of mechanical transport systems employ, however, rotational motion, which, if used to read a bar code symbol, would form an arcuate scan path across a bar code symbol positioned on a planar surface. Such a scan path would be incompatible with a conventional bar code scanner because such a scan path causes the detected relative widths of bars and spaces to change continuously, thereby introducing varying amounts of error throughout the scan of the bar code symbol.